Nacitanie textu

Otázka od: wlado

6. 12. 2002 21:59

1. na nacitanie textu so suboru pouzivam tuto proceduru:

procedure TfrmHlavni.btnNactiClick(Sender: TObject);
var
  Soub: TTextSoub;
  Radka: String;

begin
  AssignFile(Soub, 'data.txt');

  try
    Reset(Soub);

    try
      while not Eof(Soub) do begin
        ReadLn(Soub, Radka);
        Memo.Lines.Add(Radka);
      end;

    finally
      CloseFile(Soub);
    end;

except
    on E:EInOutError do
      case E.ErrorCode of
         2: ShowMessage('xyz');
       103: ShowMessage('xyz');
      else
        ShowMessage('Chyba: ' + E.Message);
      end;
    end;
  end;

problem je v tom, ze text sa umiestni do noveho riadku a kurzor do riadku
pod text. Ako spravit, aby sa text tam, kde je umiestneny kurzor a kurzor
potom ostal na konci vlozeneho textu?

2. ako spravit v RichEdite reakciu na scrollovanie?

dik

Odpovedá: ing. Jan Fiala

6. 12. 2002 23:40

A je to nutne delat takto ?
Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?

--
Jan Fiala
mailto:jan.fiala@iol.cz

6.12.2002 wlado:
> 1. na nacitanie textu so suboru pouzivam tuto proceduru:

> procedure TfrmHlavni.btnNactiClick(Sender: TObject);
> var
> Soub: TTextSoub;
> Radka: String;

> begin
> AssignFile(Soub, 'data.txt');

> try
> Reset(Soub);

> try
> while not Eof(Soub) do begin
> ReadLn(Soub, Radka);
> Memo.Lines.Add(Radka);
> end;

> finally
> CloseFile(Soub);
> end;

> except
> on E:EInOutError do
> case E.ErrorCode of
> 2: ShowMessage('xyz');
> 103: ShowMessage('xyz');
> else
> ShowMessage('Chyba: ' + E.Message);
> end;
> end;
> end;

> problem je v tom, ze text sa umiestni do noveho riadku a kurzor do riadku
> pod text. Ako spravit, aby sa text tam, kde je umiestneny kurzor a kurzor
> potom ostal na konci vlozeneho textu?

Odpovedá: Viliam Mlich

7. 12. 2002 10:00

Jan Fiala wrote:

> Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?

Chyba je v tom, ze ludia nedokazu definovat problem. Nejde tu o
LoadFromFile, ale o TMemo.Lines.Add, ktore presuva kurzor na zaciatok
dalsieho riadku, cim cele Memo zaroluje a dolu je zbytocny prazdny
riadok.

Ja to potrebujem skoro v kazdej zakazke: v kusku Mema ukazujem
poslednych N (1 az 3) riadkov logu (s moznostou scrolovania na
poslednych M), a neprisiel som na nic lepsie, nez po 'Add' urobit toto:

if Memo1.Lines.Count >= N then
  begin
  Memo1.Lines[Memo1.Lines.Count-N] := Memo1.Lines[Memo1.Lines.Count-N];
  Memo1.SelStart := Length(Memo1.Text) - 1;
  end;

Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim prinutim
memo, aby zarolovalo nazad a potom nastavim kurzor na koniec posledneho
riadku. Somarina, ale berieme to.

bye
vmlich http://www.rar.cz

Odpovedá: ing. Jan Fiala

7. 12. 2002 18:18

7.12.2002 Viliam Mlich:
>> Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?

> Chyba je v tom, ze ludia nedokazu definovat problem. Nejde tu o
> LoadFromFile, ale o TMemo.Lines.Add, ktore presuva kurzor na zaciatok
> dalsieho riadku, cim cele Memo zaroluje a dolu je zbytocny prazdny
> riadok.

Tohle byla reakce na to nacitani.

> Ja to potrebujem skoro v kazdej zakazke: v kusku Mema ukazujem
> poslednych N (1 az 3) riadkov logu (s moznostou scrolovania na
> poslednych M), a neprisiel som na nic lepsie, nez po 'Add' urobit toto:

> if Memo1.Lines.Count >= N then
> begin
> Memo1.Lines[Memo1.Lines.Count-N] := Memo1.Lines[Memo1.Lines.Count-N];
> Memo1.SelStart := Length(Memo1.Text) - 1;
> end;

> Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim prinutim
> memo, aby zarolovalo nazad a potom nastavim kurzor na koniec posledneho
> riadku. Somarina, ale berieme to.

V tomto pripade staci po pridani radku obycejne

  Memo1.Lines.Add('Pridavany text');
  Memo1.SelStart := Length(Memo1.Text) - 2;

--
Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Viliam Mlich

8. 12. 2002 0:20

>> Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim
prinutim
>> memo, aby zarolovalo nazad

> V tomto pripade staci po pridani radku obycejne
>
> Memo1.Lines.Add('Pridavany text');
> Memo1.SelStart := Length(Memo1.Text) - 2;

Nestaci, vyskusaj si to. Nehrabnes - nezaroluje nazad.

bye
vmlich http://www.rar.cz <--- dnes vysla dalsia beta
3.1